[IA64] cleanup in regionreg.c
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Thu, 6 Apr 2006 21:51:59 +0000 (15:51 -0600)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Thu, 6 Apr 2006 21:51:59 +0000 (15:51 -0600)
get_impl_rid_bits: use pal call to get implemented_rid_bits.
clean up in regionreg.c

Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
xen/arch/ia64/xen/process.c
xen/arch/ia64/xen/regionreg.c
xen/arch/ia64/xen/vcpu.c
xen/arch/ia64/xen/xenmisc.c
xen/include/asm-ia64/regionreg.h

index 311ebc313fc64a7c31e7d6645c6d6b69ccb7026a..50e70b1c8d164748e4ef751ce29b7d9fdffe34ee 100644 (file)
@@ -37,7 +37,6 @@
 
 extern void die_if_kernel(char *str, struct pt_regs *regs, long err);
 /* FIXME: where these declarations shold be there ? */
-extern void load_region_regs(struct vcpu *);
 extern void panic_domain(struct pt_regs *, const char *, ...);
 extern long platform_is_hp_ski(void);
 extern int ia64_hyperprivop(unsigned long, REGS *);
@@ -45,8 +44,6 @@ extern int ia64_hypercall(struct pt_regs *regs);
 extern void vmx_do_launch(struct vcpu *);
 extern unsigned long lookup_domain_mpa(struct domain *,unsigned long);
 
-extern unsigned long dom0_start, dom0_size;
-
 #define IA64_PSR_CPL1  (__IA64_UL(1) << IA64_PSR_CPL1_BIT)
 // note IA64_PSR_PK removed from following, why is this necessary?
 #define        DELIVER_PSR_SET (IA64_PSR_IC | IA64_PSR_I | \
index 727376f76da4c91af34462e9fc7103483c77a8a7..b665e794f8a1572ce56fd3f820c5487f9db44a88 100644 (file)
@@ -52,7 +52,7 @@ ia64_set_rr (unsigned long rr, unsigned long rrv)
 #endif
 
 // use this to allocate a rid out of the "Xen reserved rid block"
-unsigned long allocate_reserved_rid(void)
+static unsigned long allocate_reserved_rid(void)
 {
        static unsigned long currentrid = XEN_DEFAULT_RID+1;
        unsigned long t = currentrid;
@@ -91,14 +91,14 @@ int deallocate_metaphysical_rid(unsigned long rid)
 static int implemented_rid_bits = 0;
 static struct domain *ridblock_owner[MAX_RID_BLOCKS] = { 0 };
 
-void get_impl_rid_bits(void)
+static void get_impl_rid_bits(void)
 {
-       // FIXME (call PAL)
-//#ifdef CONFIG_MCKINLEY
-       implemented_rid_bits = IA64_MAX_IMPL_RID_BITS;
-//#else
-//#error "rid ranges won't work on Merced"
-//#endif
+       pal_vm_info_2_u_t vm_info_2;
+
+       /* Get machine rid_size.  */
+       BUG_ON (ia64_pal_vm_summary (NULL, &vm_info_2) != 0);
+       implemented_rid_bits = vm_info_2.pal_vm_info_2_s.rid_size;
+
        if (implemented_rid_bits <= IA64_MIN_IMPL_RID_BITS ||
            implemented_rid_bits > IA64_MAX_IMPL_RID_BITS)
                BUG();
@@ -177,31 +177,13 @@ int deallocate_rid_range(struct domain *d)
        return 1;
 }
 
-
-static inline void
-set_rr_no_srlz(unsigned long rr, unsigned long rrval)
-{
-       ia64_set_rr(rr, vmMangleRID(rrval));
-}
-
-void
+static void
 set_rr(unsigned long rr, unsigned long rrval)
 {
        ia64_set_rr(rr, vmMangleRID(rrval));
        ia64_srlz_d();
 }
 
-static inline int validate_page_size(unsigned long ps)
-{
-       switch(ps) {
-           case 12: case 13: case 14: case 16: case 18:
-           case 20: case 22: case 24: case 26: case 28:
-               return 1;
-           default:
-               return 0;
-       }
-}
-
 // validates and changes a single region register
 // in the currently executing domain
 // Passing a value of -1 is a (successful) no-op
@@ -280,8 +262,8 @@ int set_metaphysical_rr0(void)
 // validates/changes region registers 0-6 in the currently executing domain
 // Note that this is the one and only SP API (other than executing a privop)
 // for a domain to use to change region registers
-int set_all_rr( u64 rr0, u64 rr1, u64 rr2, u64 rr3,
-                    u64 rr4, u64 rr5, u64 rr6, u64 rr7)
+static int set_all_rr(u64 rr0, u64 rr1, u64 rr2, u64 rr3,
+                     u64 rr4, u64 rr5, u64 rr6, u64 rr7)
 {
        if (!set_one_rr(0x0000000000000000L, rr0)) return 0;
        if (!set_one_rr(0x2000000000000000L, rr1)) return 0;
@@ -317,25 +299,6 @@ if (!v->vcpu_info) { printf("Stopping in init_all_rr\n"); dummy(); }
 
 /* XEN/ia64 INTERNAL ROUTINES */
 
-unsigned long physicalize_rid(struct vcpu *v, unsigned long rrval)
-{
-       ia64_rr rrv;
-           
-       rrv.rrval = rrval;
-       rrv.rid += v->arch.starting_rid;
-       return rrv.rrval;
-}
-
-unsigned long
-virtualize_rid(struct vcpu *v, unsigned long rrval)
-{
-       ia64_rr rrv;
-           
-       rrv.rrval = rrval;
-       rrv.rid -= v->arch.starting_rid;
-       return rrv.rrval;
-}
-
 // loads a thread's region register (0-6) state into
 // the real physical region registers.  Returns the
 // (possibly mangled) bits to store into rr7
index 3cf29c59719ac112afc7fb5c72a62471dd9c699c..8e7e739191adcccfe1486745f1f9e6f93e283182 100644 (file)
@@ -23,7 +23,6 @@
 extern void getreg(unsigned long regnum, unsigned long *val, int *nat, struct pt_regs *regs);
 extern void setreg(unsigned long regnum, unsigned long val, int nat, struct pt_regs *regs);
 extern void panic_domain(struct pt_regs *, const char *, ...);
-extern int set_metaphysical_rr0(void);
 extern unsigned long translate_domain_pte(UINT64,UINT64,UINT64);
 extern unsigned long translate_domain_mpaddr(unsigned long);
 extern void ia64_global_tlb_purge(UINT64 start, UINT64 end, UINT64 nbits);
index a2b68356d592f965fa1674a5ede6a4668da3ccd6..239ae441e2232129393cecad83d19f5e89a6edf3 100644 (file)
@@ -29,7 +29,6 @@ int phys_proc_id[NR_CPUS];
 unsigned long loops_per_jiffy = (1<<12);       // from linux/init/main.c
 
 /* FIXME: where these declarations should be there ? */
-extern void load_region_regs(struct vcpu *);
 extern void show_registers(struct pt_regs *regs);
 
 void ia64_mca_init(void) { printf("ia64_mca_init() skipped (Machine check abort handling)\n"); }
index cd4077b301759a4ac9d52f502af5d183f344eb1f..3c019381fc073e2eed028d9c8c4da26fd3c07fef 100644 (file)
@@ -65,6 +65,7 @@ vmMangleRID(unsigned long RIDVal)
 #define vmUnmangleRID(x)       vmMangleRID(x)
 
 extern unsigned long allocate_metaphysical_rr(void);
+extern int deallocate_metaphysical_rid(unsigned long rid);
 
 struct domain;
 extern int allocate_rid_range(struct domain *d, unsigned long ridbits);
@@ -73,4 +74,8 @@ extern int deallocate_rid_range(struct domain *d);
 struct vcpu;
 extern void init_all_rr(struct vcpu *v);
 
+extern int set_metaphysical_rr0(void);
+
+extern void load_region_regs(struct vcpu *v);
+
 #endif         /* !_REGIONREG_H_ */